import axios from "axios"
import tipUtil from "@/utils/tipUtil";

export default function (config) {
    let protocol = "http";
    let host = "localhost";
    let port = "80";

    const instance = axios.create({
        baseURL: protocol + "://" + host  + ":" + port,
        timeout: 5000,
        withCredentials: true,  //运行axios发送请求的时候携带cookie

        validateStatus: function (status) {
            if (status >= 500) {
                tipUtil.errTip("服务器错误");
            }
            if (status >= 400 && status < 500) {
                tipUtil.errTip("客户端错误");
            }
            return status >= 200 && status < 300;
        },
    });

    // 添加请求拦截器
    instance.interceptors.request.use(function (request) {
        //判断是否有登录,如果没有登录并且去访问业务数据
        // 在发送请求之前做些什么
        /*判断token是否存在   登录拦截*/
        if(window.localStorage.getItem("token")){
            /*设置统一的header*/
            request.headers.Authorization = window.localStorage.getItem("token");
        }
        return request;
    }, function (error) {
        // 对请求错误做些什么
        return Promise.reject(error);
    });

    // 添加响应拦截器
    instance.interceptors.response.use(function (response) {
        // 对响应数据做点什么
        if (response.headers.authorization) {
            window.localStorage.setItem("token", response.headers.authorization);
        }
        return response.data;
    }, function (error) {
        if (error.code === 'ECONNABORTED' && error.message.indexOf('timeout') !== -1) {
            tipUtil.errTip("连接服务器超时！请稍后重试！");
        }
        // 对响应错误做点什么
        // 若不是超时,则返回未错误信息
        return Promise.reject(error);
    });

    return instance(config);
}